In conventional messaging systems, such as systems implementing queuing protocols like AMQP, the communication routes between brokers are statically defined at system setup, often based on the connections of message consumers who exist at the time that the network is first configured. Such systems typically forward all messages from message producers to all brokers in the network because a consumer for any particular message may potentially be connected to any broker in the network. The system, however, has no knowledge or tracking of whether or not a consumer for a particular message exists along any particular route.
As a consequence, conventional systems constantly forward messages to brokers that have no consumers connected to them, either directly or indirectly. This results in inefficient and unnecessary use of system resources, such as communication bandwidth between brokers, as well as processing and storage resources on each individual broker that unnecessarily handles a message for which there is no downstream consumer.
Accordingly, it is desirable to provide systems and methods that dynamically route messages based on the availability of a message consumer on any given route, and which adapt to changes in message consumer availability throughout the network.